home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
System Booster
/
System Booster.iso
/
Archives
/
StartupTools
/
fixslinks_0_5.lha
/
fixslinks
/
fixslinks.doc
< prev
next >
Wrap
Text File
|
1995-08-12
|
4KB
|
111 lines
fixslinks 0.5ß
(c) 1995 Todd Vierling
Freely redistributable
(Pardon me, German users; the Alt-s makes a nifty «beta» sign.)
"fixslinks" fixes (most of) the problems encountered when using symbolic
links on an Amiga running Kickstart V37 or greater. It does not intercept
packets (so that programs can deliberately look for ERROR_IS_SOFT_LINK),
but only the dos.library calls:
* Open()
* DeleteFile()
* Lock()
* CreateDir()
* LoadSeg()
* SetComment()
* SetProtection()
* MakeLink()
* NewLoadSeg()
Normally, soft links work the following way:
[drive:]softlink/path1/path2[/file] (works)
[drive:]path1/path2/softlink[/] (works)
[drive:]path1/softlink/path2[/file] (does not work)
"fixslinks" will correct the third situation, where a softlink is part of
a full pathname and not at the beginning or end of the path. The correction
is only attempted if one of the calls above returns ERROR_OBJECT_NOT_FOUND;
if indeed the file or directory in question does not exist, it will remain
an error.
This program was written through version 0.4ß in six hours, to fix problems
encountered while writing AmiNIX (which I'm finally working on again, after
months of deep financial difficulty). It will likely be updated soon to
finish the To-Do's listed below, and any other requests for enhancements
that may come in for this program.
A bug-fixed version of Loren J. Rittle's 'ls 4.7ljr' is included to allow
easy listing of soft links (with ls -l). The original version of this
program incorrectly called DeviceProc() to get the message port and lock
for ReadLink(), and has been changed to correctly extract the port from a
lock on the current directory. I will likely be fixing the program up to
add AmiNIX special file and permission ability, and including it with the
next release of fixslinks.
If you have any comments or questions, mail me:
Todd Vierling <amigagod@grove.ufl.edu>
===== Usage
run >NIL: fixslinks
There are not yet any command line options. They will be added in a future
release. It currently does not check to see if fixslinks is already
running, so run it only once!
"fixslinks" doesn't care if you run it before or after other dos.library
patchers, BUT: do note that utilities such as SnoopDos that intercept the
Lock() and CurrentDir() calls will get different information if they are
started before fixslinks. Run these "snooper" utilities after fixslinks.
===== WARNINGS!
Most directory tools still don't support soft links. So be very careful!
If you want to delete a soft link, use the CLI command Delete (without the
ALL switch!) to remove it. That way you won't accidentally recurse into
a directory you don't want to.
===== Supplied Files
fixslinks The program
fixslinks.c The source code
fixslinks.doc This documentation file.
ls Bug-fixed 'ls' v4.7-ljr
ls.doc Docs for the included version of 'ls'
makelink MakeLink replacement, supports soft links
makelink.doc Docs for MakeLink replacement
SCOPTIONS Options file for compiling fixslinks under SAS/C 6.x
===== To-Do's
* Support Rename(), Execute(), System(), and (V39) SetOwner().
* Make fixslinks launch itself into the background automatically.
* Support locking of soft links with no object (by producing a faux lock
that points to a special MsgPort, accepting only ACTION_EXAMINE and
ACTION_FREE_LOCK packets). This will allow the commands such as Delete to
work properly if the link's object does not exist.
* Add a (dynamically changeable) option to automatically examine softlink
objects on an ExNext() or ExAll() call
* Add an option to disable or remove fixslinks from memory. (Likely as a
commodity.)
===== Version History
0.1-0.3 (unreleased) Early work-in-progress versions.
0.4ß First release.
0.5ß Added IoErr() == ERROR_OBJECT_NOT_FOUND check to ensure the correct
error before calling the softlink resolution code. (Now an access
of DF0:x on an empty drive won't ask to insert a disk twice.)